package org.alesv.entranceExams.service.security;

import java.util.ArrayList;
import java.util.List;

import org.springframework.security.GrantedAuthority;
import org.springframework.security.GrantedAuthorityImpl;
import org.springframework.security.userdetails.User;
import org.springframework.security.userdetails.UserDetails;
import org.springframework.security.userdetails.UserDetailsService;

/**
 * Implementación del servicio de autenticación de usuarios mediante Spring
 * Security. Este servicio va a ser llamado por Spring Security cada vez que se
 * autentique un usuario y se quiera verificar sus credenciales.
 * 
 * @see org.springframework.security.userdetails.UserDetailsService
 */
public class UserDetailsServiceImpl implements UserDetailsService {

	/**
	 * {@inheritDoc}
	 */
	@Override
	public final UserDetails loadUserByUsername(final String username) {
		final List<GrantedAuthority> authList = new ArrayList<GrantedAuthority>(
				2);

		authList.add(new GrantedAuthorityImpl(UserAuthentication.ROLE_USER));

		return new User(username, "", true, false, false, true,
				authList.toArray(new GrantedAuthority[] {}));
	}

}
